There are numerous communication means and protocols by which data is transmitted from one communicatively linked computer system to another. There are also innumerable problems that can occur during the transmission of the data within the link or network that can cause the data being received to contain errors. It is well known in the art that it is beneficial to contain that error to as small a portion of the network as possible as well as minimizing any collateral damage that may occur within the network.
Accordingly, there are accepted methods/protocols for communicating data that include provisions which may reduce or prevent problems associated with data errors that occur, commonly referred to as reliable protocols. There are also other accepted methods/protocols for communicating data that do not include provisions for minimizing data errors, commonly referred to as unreliable protocols.
One example of a reliable protocol for the communicating of data is to send each message, packet, or character redundantly until it can be reasonably assured that the data has been properly received. For example, a system can require that each message be transmitted three times in a row. The receiving computer system then compares the data in the received data packets, and when the data has been verified, the next data packet is processed. By redundant sending of the data, data errors are reduced.
However, redundant sendings of the same data have disadvantages associated therewith. For example, multiple sendings of the data message or packet places an additional load on the network, using valuable bandwidth and time to repeatedly send the same data. Further, an additional load is placed on both the sending and receiving computers, both in time needed to repeatedly communicate the same data, and in usable data storage space that is used to retain multiple copies of the same data. The combination of an additional load placed on the network and the associated computers effectively slows the network.
Another example of a reliable protocol for communicating data is TCP/IP (transmission control protocol/Internet protocol), commonly utilized in today's network environments. TCP, using a packet sequencing system, provides for intercommunication between the sending and receiving computer systems. The receiving computer system acknowledges proper delivery of each data packet to the sending computer system, before processing subsequent data. For example, if a packet(s) of data was not received or had been corrupted during transmission, the receiving computer system notifies the sending computer system that that particular packet/packets was/were not properly received, and the sending computer then re-sends that corrupted data packet, thus replacing the damaged or corrupted data.
By virtue of the sequencing of data packets and the intercommunication between sending and receiving computer systems, instances of erroneous data being communicated within the system may be reduced. However, TCP has disadvantages associated therewith. For example, because of the intercommunication, e.g., acknowledging signals, between the sending and receiving computer systems, communication using TCP takes longer to transmit than other communication protocols. Additionally, the acknowledging signals place an additional load on both the computer systems and the network in which the computer systems are communicating, while also reducing available bandwidth within the network.
An example of an unreliable protocol that is widely used in computer network systems to communicate data is UDP (user datagram protocol). It is appreciated that UDP does not provide for sequencing of data packets, nor does UDP provide for acknowledgment of arrival of data packets, as does TCP. UDP sends a data packet, assumes the data arrived at the receiving computer system, and continues sending data. Because UDP does not provide for sequencing and/or acknowledging of data packets, communications transmitted using UDP are substantially faster (relatively speaking) than those transmitted using TCP.
However, UDP has disadvantages associated therewith, For example, because of the lack of sequencing and/or acknowledgment signals between sending and receiving computer systems, data send using UDP is more susceptible to data errors. Further, networked computer systems that use UDP and other less-reliable communication protocols are therefore vulnerable to data errors and to the propagation of those data errors.
Regardless of the communication protocol/s used to transmit information, data errors do occur. What has not been addressed, in the above described unreliable communication protocols and which may be applicable to many other communication protocols not described, are the steps that should be taken subsequent to the detection of an error and how to prevent additional collateral damage within the network. Also not addressed in either reliable and/or unreliable protocols is the matter of how the computer systems communicating within the network acknowledge their being made aware of and their handling of the error to the network and the computers therein. This is especially important because many of the computer systems within the network may have different operating systems, and those different operating systems may have difficulty in intercommunication.
Thus, there exists a need for a method and apparatus that can guard computer systems against data errors and the propagation of those errors. A need further exists for a method that fulfills the above need, and which provides a method and apparatus to enable computer systems to notify the network that it is apprised of and has handled the error.